package dev.blogmoon.cn.system.repository;

import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import dev.blogmoon.cn.common.entity.PageResult;
import dev.blogmoon.cn.common.utils.BaseConvert;
import dev.blogmoon.cn.common.utils.PageUtil;
import dev.blogmoon.cn.system.entity.SysDict;
import dev.blogmoon.cn.system.entity.SysDictValue;
import dev.blogmoon.cn.system.module.QueryDictReq;
import dev.blogmoon.cn.system.module.SysDictDTO;
import dev.blogmoon.cn.system.module.SysDictValueDTO;
import dev.blogmoon.cn.system.service.SysDictService;
import dev.blogmoon.cn.system.service.SysDictValueService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Objects;

@Service
public class SysDictValueRepository {




    @Autowired
    private SysDictValueService sysDictValueService;



    public PageResult<SysDictValueDTO> page(QueryDictReq req) {

        Page<SysDictValue> page = sysDictValueService.page(new Page<>(req.getPageNo(), req.getPageSize()), Wrappers.<SysDictValue>lambdaQuery()
                .eq( SysDictValue::getDictId, req.getDictId())
                .orderByDesc(SysDictValue::getCreateTime));

        return PageUtil.getPage(page, item -> BaseConvert.convert(item, SysDictValueDTO.class));
    }

    public void save(SysDictValueDTO sysDictValueDTO) {
        SysDictValue sysDictValue = BaseConvert.convert(sysDictValueDTO, SysDictValue.class);
        if (Objects.isNull(sysDictValue.getId())) {
            sysDictValue.setModifyField();
            sysDictValueService.save(sysDictValue);
        } else {
            sysDictValue.setCreateField();
            sysDictValueService.updateById(sysDictValue);
        }
    }

    public void remove(List<Long> ids) {
        sysDictValueService.removeByIds(ids);
    }

    public SysDictValueDTO getById(Long id) {
        SysDictValue sysDict = sysDictValueService.getById(id);
        return BaseConvert.convert(sysDict, SysDictValueDTO.class);
    }
}
